// pages/home-music/index.js

import { getSwiperData, getSongsMenuData, getSongsRank } from '../../service/api_music'
import { homeMusicOption } from '../../constValue/index'
import { eatChicken } from '../../constValue/individualize_data'
// 使用全局数据
const app = getApp()
Page({
  data: {
    // 静态数据
    homeMusicOption: {},
    eatChickenSongs: [],
    // 歌单种类
    cat: '',
    // 网络数据
    banners: [],
    currentSwiterItemIndex: 0,
    // 推荐歌单列表
    recommendSongs: [],
    // 华语歌曲列表
    songList: [],
    // 模糊层高度 
    coverHeight: 0,
    statusHeight: 0,
  },

  onLoad: function (options) {
    // 获取静态数据
    this.getStaticData()
    // 获取网络数据
    this.getPageData()
    // 获取设备高度
    this.getStatusHeight()
  },
  /************ 请求数据 **********/
  // 获取页面数据
  getPageData: function() {
    // 1.获取轮播图数据
    getSwiperData().then(res => {
      this.setData({banners: res.banners})
    }).then(res => {
      // 等待数据信息全部赋值完成后，在进行获取高度的操作
      this.getFirstBlockHeight()
    })
    // 2.获取推荐歌单数据
    getSongsMenuData("全部").then(res => {
      this.setData({ recommendSongs: res.playlists, cat: res.cat })
    })
    // 3.获取热门歌曲数据
    getSongsRank(1).then(res => {
      this.setData({ songList: res.playlist.tracks.slice(0, 12) })
    })
  },
  // 获取静态数据
  getStaticData: function () {
    this.setData({ homeMusicOption, eatChickenSongs: eatChicken })
  },
  
  /************ 事件处理 **********/
  // 搜索框事件
  handleSearchClick: function() {
    wx.navigateTo({
      url: '/pages/search-music/index',
    })
  },
  // 轮播图事件
  handleSwiperItemChange:function (event) {
    const currentSwiterItemIndex = event.detail.current
    this.setData({ currentSwiterItemIndex })
  },
  handleClickOption: function(e) {
    const index = e.target.dataset.index
    switch(index) {
      case 0:
        wx.navigateTo({
          url: '/pages/option-song-menu/index',
        })
        break;
      case 1:
        wx.navigateTo({
          url: '/pages/option-rank/index',
        })
        break;
      default:
        break;
    }
  },
  
  /************ 监听数据 **********/
  // 获取第一块内容的高度
  getFirstBlockHeight: function () {
    // 创建节点选择器
    const query = wx.createSelectorQuery()
    const self = this
    query.select('.first-block').boundingClientRect(function(rect) {
      self.setData({ coverHeight: rect.height})
    }).exec()
  }, 
  // 获取顶部静态栏高度
  getStatusHeight: function () { 
    this.setData( {statusHeight: app.globalData.statusBarHeight + 30} )
  }
})